package com.naiterui.ehp.bs.payment.repository;

import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.naiterui.common.repository.core.BaseJpaRepository;
import com.naiterui.ehp.bs.payment.entity.PayInfo;

/**
 * <pre>
 * 支付信息数据库操作
 * </pre>
 *
 * @date 2017年09月09日
 * @since 1.0.0
 */
@Repository
public interface IPayInfoRepository extends BaseJpaRepository<PayInfo, Long> {

    /**
     * 通过订单号获取支付信息
     *
     * @param orderSn 订单号
     *
     * @return 返回该订单号的支付信息
     */
    PayInfo findByOrderSn(String orderSn);

    /**
     * 通过支付流水号获取订单信息
     *
     * @param tradeSn 支付流水号
     *
     * @return 支付信息
     */
    PayInfo findByTradeSn(String tradeSn);

    /**
     * 通过订单号更新订单状态
     *
     * @param orderSn 订单号
     * @param status  订单状态
     */
    @Modifying(clearAutomatically = true)
    @Query("update PayInfo set status=:status where orderSn=:orderSn")
    void updateStatus(@Param("orderSn") String orderSn, @Param("status") Integer status);

    /**
     * 通过订单号更新订单通知状态
     *
     * @param orderSn              订单号
     * @param notifyBusinessStatus 通知状态
     */
    @Modifying(clearAutomatically = true)
    @Query("update PayInfo set notifyBusinessStatus=:notifyBusinessStatus where orderSn=:orderSn")
    void updateNotifyBusinessStatus(@Param("orderSn") String orderSn, @Param("notifyBusinessStatus") Integer notifyBusinessStatus);

}
